package it.azienda.managerworkstandard.view;

import it.azienda.framework.modello.BeanBase;
import it.azienda.managerworkstandard.modello.BeanFattura;
import it.azienda.managerworkstandard.modello.BeanLogin;
import it.azienda.framework.utilita.Utilita;
import it.azienda.framework.view.DettaglioStorico;
import it.azienda.managerworkstandard.modello.BeanCliente;
import it.azienda.managerworkstandard.modello.BeanClienteDett;
import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.HashMap;
import javax.faces.application.FacesMessage;
import javax.faces.component.UIViewRoot;
import javax.faces.component.html.HtmlForm;
import javax.faces.context.FacesContext;

public class DettaglioClienteDett extends DettaglioStorico{
    
    private HtmlForm form = new HtmlForm();
    private BeanClienteDett beanClienteDett;
    
    public void setBeanClienteDett(BeanClienteDett beanClienteDett) {
        setObj(beanClienteDett);
        this.beanClienteDett = beanClienteDett;
    }
    
    public BeanClienteDett getBeanClienteDett(){
        return (BeanClienteDett)getObj();
    }
    
    public HtmlForm getForm() {
        form = (HtmlForm) Utilita.getSession().getAttribute("formStorico");
        if (form == null) {
            form = new HtmlForm();
        }
        FacesContext ctx = FacesContext.getCurrentInstance();
        beanClienteDett =(BeanClienteDett) ctx.getExternalContext().getRequestMap().get("beanClienteDett");
        controlloDopoSalvataggio(beanClienteDett);
        Utilita.getSession().removeAttribute("form");
        return form;
    }
    
    public void controlloDopoSalvataggio(Object obj) {
        BeanClienteDett clienteDett=(BeanClienteDett)obj;
        if(clienteDett.getBeanFattura()==null){
            clienteDett.setBeanFattura(new BeanFattura());
        }else{
            try{
                if(clienteDett.getBeanFattura().getId()!=null){
                    BeanFattura beanFattura=new BeanFattura();
                    beanFattura=(BeanFattura)beanFattura.dettaglio(clienteDett.getBeanFattura().getId());
                    clienteDett.setBeanFattura(beanFattura);
                }
            }catch(Exception e){
            }
        }
    }
    
    public void setForm(HtmlForm form) {
        setFormObject(form);
        this.form = form;
        Utilita.getSession().setAttribute("formStorico",form);
    }
    
    public void caricaFattura(){
        BeanBase base=new BeanBase();
        ArrayList listaOggetti=base.caricaTutti("Fattura");
        String idB = Utilita.getRequest().getParameter("idBean");
        Integer idBean=new Integer(idB);
        try {
            for(int y=0; y<listaOggetti.size();y++){
                Integer pos=new Integer(y);
                Method method=null;
                Object obj=(Object)listaOggetti.get(pos.intValue());
                Class classe = obj.getClass();
                classe.newInstance();
                
                Method[] metodi = classe.getMethods();
                for (int i=metodi.length; i>0; i--) {
                    Method metodo = metodi[i-1];
                    String nomeMetodo = metodo.getName();
                    if (nomeMetodo.startsWith("getId")) {
                        method = classe.getMethod(nomeMetodo, new Class[] {});
                        Integer id=(Integer)method.invoke(obj,new Object[] {});
                        if(id!=null){
                            if(id.intValue() == idBean.intValue()) {
                                Utilita.getSession().removeAttribute("posizioneOggetto");
                                Utilita.getSession().setAttribute("posizioneOggetto",pos);
                                Utilita.getRequest().setAttribute("beanFattura",obj);
                                
                                BeanLogin login= (BeanLogin) Utilita.getSession().getAttribute("login");
                                Utilita.getSession().removeAttribute("login");
                                login.setListaOggetti(new HashMap());
                                login.settaHashMapOggetti(listaOggetti);
                                Utilita.getSession().setAttribute("login",login);
                                
                                y=listaOggetti.size();
                            }
                        }
                    }
                }
            }
        }catch(Exception ex){
            
        }
        FacesContext ctx = FacesContext.getCurrentInstance();
        String url2 = "/dettaglioFattura.jsf";
        UIViewRoot view = ctx.getApplication().getViewHandler().createView(ctx,url2);
        view.setViewId(url2);
        ctx.setViewRoot(view);
        ctx.renderResponse();
    }
    
}